Collaborative environments are becoming pervasive in the industry. One area of collaboration that is critical to an enterprise is that which is associated with new software development. During software development a variety of different developers can be working on the same or dependent modules at the same time and in entirely different processing environments.
When this occurs, each developer may be working on a different piece of the module but all the data and all the contents associated with each instance of the dual-checked out model are separately created in duplicate within memory and provided as separate independent copies to each developer.
Essentially, in a traditional versioning control or team environment data is stored on a per-instance basis for objects. This presents problems, such as inefficiency when the data that is set on one instance is shared or replicated in the other instances. In such a case, each instance has to get stamped with the changed data to keep things in synchronization.
This also results in a lot of additional memory overhead in the model environment at runtime. It also creates additional file overhead in that one has to keep saving out changes as they occur to multiple file instances. So, one update ends up causing a lot of file updates, which can degrade performance and cause tension because of the resulting file merges that have to occur, which would otherwise be unnecessary.
Even in object model environments with super class objects, the data in the super class is still saved to each instance derived and instantiated off that super class.
Thus, improved mechanisms are needed for data between objects in a team or project environment.